import 'dart:ui';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:wch/utils/log_utils.dart';
import 'package:wch/widget/common_widget.dart';

class GestureMovePage extends StatefulWidget {
  const GestureMovePage({super.key, required this.widgetX, required this.widgetY, required this.moveOffsetX, required this.moveOffsetY});

  final double widgetX;
  final double widgetY;
  final double moveOffsetX;
  final double moveOffsetY;
  final bool isStart = false;

  @override
  State<GestureMovePage> createState() => _GestureMovePageState();
}

class _GestureMovePageState extends State<GestureMovePage> with TickerProviderStateMixin{

  late AnimationController controller;
  late Animation<Offset> animation;


  @override
  Widget build(BuildContext context) {
    return Container(
      child: Stack(
        children: [
          Container(),
          Positioned(
            child: SlideTransition(
              position: animation,
              child: Container(
                color: Color(0xFFF78554),
              ),
            ), left: widget.widgetX, top: widget.widgetY, width: 30, height: 100,)
        ],
      ),
    );
  }

  @override
  void initState() {
    controller =
        AnimationController(duration: Duration(milliseconds: 500), vsync: this);
    controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        //AnimationStatus.completed 动画在结束时停止的状态
        debugPrint('完成');
      } else if (status == AnimationStatus.dismissed) {
        //AnimationStatus.dismissed 表示动画在开始时就停止的状态
      }
    });
    animation =
        Tween(begin: Offset(0, 0), end: Offset(0, 0)).animate(controller);
  }
}

// import 'package:flutter/material.dart';
//
// class GestureMovePage extends StatefulWidget {
//   @override
//   _GestureMovePageState createState() => _GestureMovePageState();
// }
//
// class _GestureMovePageState extends State<GestureMovePage>
//     with SingleTickerProviderStateMixin {
//   late AnimationController _controller;
//   late Animation<Offset> _animation;
//   late Offset _dragOffset = Offset.zero;
//   bool _isAnimationInProgress = false;
//
//   @override
//   void initState() {
//     super.initState();
//
//     _controller = AnimationController(
//       vsync: this,
//       duration: Duration(milliseconds: 1000),
//     );
//
//     _animation = Tween<Offset>(
//       begin: Offset.zero,
//       end: Offset(0.0, 0.0), // 修改结束位置
//     ).animate(CurvedAnimation(
//       parent: _controller,
//       curve: Curves.easeOut, // 更改动画曲线
//     ));
//
//     _animation.addListener(() {
//       setState(() {
//         _dragOffset = _animation.value;
//       });
//     });
//
//     _controller.addStatusListener((status) {
//       if (status == AnimationStatus.completed ||
//           status == AnimationStatus.dismissed) {
//         setState(() {
//           _isAnimationInProgress = false;
//         });
//       }
//     });
//   }
//
//   @override
//   void dispose() {
//     _controller.dispose();
//     super.dispose();
//   }
//
//   void _onPanUpdate(DragUpdateDetails details) {
//     if (!_isAnimationInProgress) {
//       setState(() {
//         _dragOffset += details.delta;
//       });
//     }
//   }
//
//   void _onPanEnd(DragEndDetails details) {
//     if (!_isAnimationInProgress) {
//       _controller
//         ..reset()
//         ..animateTo(
//           1,
//           curve: Curves.easeOutBack,
//         );
//
//       setState(() {
//         _isAnimationInProgress = true;
//       });
//     }
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(
//         title: Text('Drag Animation Demo'),
//       ),
//       body: Center(
//         child: GestureDetector(
//           onPanUpdate: _onPanUpdate,
//           onPanEnd: _onPanEnd,
//           child: Transform.translate(
//             offset: _dragOffset,
//             child: Container(
//               width: 100,
//               height: 100,
//               color: Colors.red,
//               child: Center(
//                 child: Text(
//                   'Drag me',
//                   style: TextStyle(color: Colors.white),
//                 ),
//               ),
//             ),
//           ),
//         ),
//       ),
//     );
//   }
// }

